﻿using System;
using Microsoft.Surface.Core;

namespace Black.Surface2DEngine.Input.Surface
{
    /// <summary>
    /// Encapsule la gestion des contacts pour un balayage bas niveau.
    /// </summary>
    public class TouchContact
    {
        #region Accesseurs

        /// <summary>
        /// Retourne si le contact à changé depuis le dernier balayage.
        /// </summary>
        public bool Changed
        {
            get;
            internal set;
        }

        /// <summary>
        /// Retourne le contact associé.
        /// </summary>
        public Contact Contact
        {
            get;
            private set;
        }

        /// <summary>
        /// Retourne si le contact à été détruit.
        /// </summary>
        public bool IsAlive
        {
            get;
            internal set;
        }

        #endregion

        #region Constructeur

        /// <summary>
        /// Initialise une nouvelle instance de <c>CoreContact</c>.
        /// </summary>
        /// <param name="p_oContact"><c>Contact</c> associé.</param>
        public TouchContact(Contact p_oContact)
        {
            // Vérification

            if (p_oContact == null)
                throw (new ArgumentNullException("p_oContact", "L'instance du contact ne peut être NULL."));

            // Initialisation

            this.Changed = false;
            this.Contact = p_oContact;
            this.IsAlive = true;
        }

        #endregion
    }
}
